package com.xiaomi.baidumap.network;

import com.xiaomi.baidumap.hotuser.HotUserAdapter;
import com.xiaomi.baidumap.model.AccessToken;
import com.xiaomi.baidumap.model.HotUserResult;
import com.xiaomi.baidumap.model.RepoContentResult;
import com.xiaomi.baidumap.model.RepoResult;
import com.xiaomi.baidumap.model.User;

import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * Created by Administrator on 16-8-29.
 */
public interface GithubApi {

    //放置请求的API

    //GitHub请求开发者的时候，申请的信息
    String CLIENT_ID = "11c4ce93f246a0c82cca";
    String CLIENT_SECRET = "4aabb732fbd99a110a2367e175fb4ffef56961a6";

    //申请时填写的标志(用于重定向标记)
    String CALL_BACK = "xiaomi";
    //还有授权登陆时，可以访问的区域
    String AUTH_SCOPE="user,public_repo,repo";
    //登录页面的网址(WebView来进行访问)
    String AUTH_URL = "https://github.com/login/oauth/authorize?client_id="+CLIENT_ID+"&scope="+AUTH_SCOPE;

    /**
     * 获得访问令牌Token
     * @return
     */
    @FormUrlEncoded
    @POST("https://github.com/login/oauth/access_token")
    @Headers("Accept: application/json")
    Call<AccessToken> getOAuthToken(
            @Field("client_id") String clientId,
            @Field("client_secret")String clientSecret,
            @Field("code") String code
                 );

    /**
     * 使用Token获取用户信息
     * @return
     */
    @GET("user")
    Call<User> getUser();

    /*
    *获取仓库列表的请求API
    * @param qurey 查询的参数 -- 体现为语言
    *
    *@param pageId 查询的页面 -- 从1也开始
    * */
    @GET("/search/repositories")
    Call<RepoResult> searchRepos(
            @Query("q") String qury,
            @Query("page") int pageId
    );

    //获取readme
    @GET("/repos/{owner}/{repo}/readme")
    Call<RepoContentResult> getReadme(
            @Path("owner") String owner,
            @Path("repo") String repo
    );

    //获取Markdown文档的原始文件
    //设置请求头来获得想要的什么文件类型(纯文本的方式),内容以html的方式显示出来
    @Headers({"Content-Type:text/plain"})
    @POST("/markdown/raw")
    Call<ResponseBody> markDown(
            @Body RequestBody body
    );

    //查询用户
    @GET("/search/users")
    Call<HotUserResult> searchUsers(
        @Query("q") String query,
        @Query("page") int pageId
    );
}
